package com.zh.netty.inboundhandlerandoutboundhandler;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

/**
 * @Description:
 * @ClassName MyByteToLongDecoder
 * @date: 2021.04.02 15:40
 * @Author: zhanghang
 */
public class MyByteToLongDecoder extends ByteToMessageDecoder {
    /**
     * description: 使用解码器 将入站的数据进行解码传给下一个handler
     * date: 2021年-04月-02日 15:40
     * author: zhanghang
     *
     * @param ctx  上下文对象
     * @param in   入站的ByteBuf
     * @param out  List集合，将解码后的数据传给下一个handler
     * @return void
     */
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
        // 因为 传的数据为long,long 有8个字节
        // in.readableBytes() 入站数据的可以读的字节数
        if (in.readableBytes() >= 8){
            out.add(in.readLong());
        }
    }
}
